home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
UTIL
/
MEMORY
/
OLD
/
MEM208SRC
/
!Memphis
/
!Help
< prev
next >
Wrap
Text File
|
1993-09-10
|
11KB
|
240 lines
Memphis: Early capital of ancient Egypt, on W. bank of Nile S. of Cairo.
& Tennessee USA on Mississippi, Martin Luther King assassinated 1968.
About MemFS 2.08
================
Memphis is a replacement RAM-based filing system (with lots of knobs on!)
that uses the System Sprite area rather than the RAM disc area. In
particular it provides;
* Provides a dynamically resizeable ramdisc by using the system sprite area
for storage. (In sprites so it's compatible with other users)
* Up to 30 character file names (beware old filer 10-char bug).
* 2.00 has a new storage scheme, that can use a slave filing system
instead of the Sprite area. Try Filer_Opendir Mem#adfs;;4.$.MemDisc:$
Note the semicolons - they are important. This is useful if you need
to use long file names or many files in a directory. Notice that
it may take memfs up to 3 seconds after use before the disc is updated.
Each file is compressed by the Acorn "Squash" module in ROM.
*** Note that 2.xx is incompatible with previous versions, so discard any
saved sprite areas you may have.
* Filer now has a quit menu á la RO3 ramfsfiler, and files can be dropped
into it directly (from an application saveas box or from filer)
* Automatic creation of directories in path of a created file.
* Automatically grows and shrinks sprite area, but this can only happen when
the system allows. It only shrinks down enough to leave the configured
spritesize free, and only shrinks when deleting, so you can drag it large
to make space before operations during which it cannot grow. This means
*COPY, principally, since that claims all free memory during its operation.
It is ideal for use as a scrap device - this is not set by default in the
!Run file, but users who want this feature can easily enable it by editing
the !Run file.
Start by running the memfs application, then use it like the ramdisc, except
it can be resized with stuff in. It will not work under RISCOS 2.
I am pretty sure that this works, but there may well still be bugs, so
please don't commit irreplaceable data to it!
Technical
=========
A nearly full riscos file system, supports everything except (I think):
* Wildcarded: *access, *info, *fileinfo, Open
* options, disc names.
* URD(&) - easy to do if demand, but I morally disapprove.
* Does not sort *CAT/*EX output
The error message "Lost inode" means that MemFS was unable to find a sprite
it expected to. It will use any file structure that it finds already present
when it is loaded, so if you want you can save the entire contents with
*ssave, and load it again with *sload.
The memfs and memfsfiler modules should work ok when loaded outside the
Wimp, and behave as a standard fs/filer pair. The filer needs a sprite
called memfs in the wimp sprite pool. Of course, it will be difficult to
extend the sprite area when anything is running in single tasking mode.
Some suboptimal algorithms. Unsorted directories are searched linearly :-(
The sources-distribution of memfs comes with 'FSLib' which is an ALF
library that provides a very easy interface for writing FileSwitch filing
systems. See FSLib docs for more details.
Data Format
===========
This information is only provided to allow you to recover mangled data in
extremis. Each file or directory gets an inode number>0. An inode is found
either in the sprite mfsXXXXXXXX (XXX the number in hex) or if memfs is
hosted, in a file <specialfield>,.X,.X,.X,.X (XXX the number base 32).
Directories are composed of 512 byte pages, each page filled with inode
number/0-terminated name pairs, each word aligned, all except the last
terminated by -3. Inode 0 is special, and holds the properties of all other
inodes. It is a table of entries, each 6 words: load, exec, length,
allocated, attr, parentinode. Entry 0 has parentinode indicating a chain of
free inodes linked by then parentinode entries.
Dedications
===========
This project was written in C and produced using the FSinC stuff from Jon
Roach of Acorn, as heavily hacked by me.
The idea of using the sprite area as a dynamic method of allocating space
came to Nicko Van Someren, in a flash of insight during a conversation we
had. This was several months after I had given up on an attempt at this
using the ramfs dynamic area due to the evil that riscos perpetrates when
one calls ChangeDynamic area on that, and settled for the horrible solution
of the RMA, which would never shrink.
It is dedicated to debugging via printf :-(
Reporting problems:
==================
Please read this BEFORE sending me any reports of problems! With a complex
(and buggy!) program like !Memphis, I get a fair few email messages of the
form "I ran your !Memphis, and it didn't work - what am I doing wrong?"
PLEASE don't send me such unhelpful comments! Really, I need to know as much
of the following as you can provide in the initial email;
* Your machine - model, memory, harddisc (interface), version of RISC OS,
other hardware or software that may be interfering with !Memphis.
* If you were using a slave filing system, what was that filing system?
* Version number of !Memphis
* Exactly what you did from machine switch on until memfs failed to work
as expected
* Exactly what happened - eg, did the machine crash completely with the
mouse pointer stopping ?
* And ideally, the source file and changes required to fix the problem ;-)
Obviously if you are not an experienced programmer you can't do this.
Distribution:
============
This software may be freely redistributed, so long as only a reasonable
copying or media charge is made, and all files I distribute are included. I
retain copyright to the code. Commercial (including magazine) distribution,
or distributing modified versions of this please contact me - I am normally
happy for it to be reused in other free software, but like to avoid deviant
versions of mine causing trouble.
I am not asking for money, but if you like and use it I would be surprised
and amazed by any contributions, and you will receive a disc with latest
versions on. (>£10, say)
Brian Brunswick brian@aleph1.co.uk (Internet)
Fairview OR Brian.Brunswick@cl.cam.ac.uk
Avenue des Hirondelles
Pool-in-WharfeDale
Leeds
LS21 1EY
UK
0532 843737
Versions later than 2.00:
========================
Because Brian is now out 'in the real world' I (Nick Smith) am acting as a
first line of support for !Memphis. I have tidied it up from the v2 beta
release to the public release version, and will improve the program as I get
feed back from users, etc. In particular I've done masses of work on the
desktop filer application. Currently, Brian wrote 90% of the actual software -
so send him all that money in gratitude !
Please email or snail-mail me comments, bug reports, requests for new
features, etc. and I will hopefully have the time to deal with them. If you
make any modifications to the code, please send them to me rather than
giving out copies - I would like to coordinate new releases. Thanks.
I can be contacted at the following address, at least until Jul '94 ;
N.A. Smith nas20@cus.cam.ac.uk (Internet)
Churchill College
Cambridge
CB3 0DS
Revision history:
================
Modifications to v2.00 (02-Sep-92) [bdb betarelease]
- Lots of new (broken) features added :-(
Modifications to v2.01 (30-Mar-93)
- Improved documention; added installation instructions, updated info,
added revision history, etc
- removed compilation dependency on having brian's harddrive 8-)
- did some slightly better !Sprites, with !Sprites22
Modifications to v2.02 (04-Apr-93)
- Large amount of work done to filer (no separate history) Loads of
new features, including; info dbox, create dbox for easy creation
of memdisc files on disc (uses dragasprite!), doesn't do *snew
upon quit anymore but just deletes memfs sprite files, filer windows
closed when memfsfiler quit, desktop save support (saves spritearea
to scrap file inside !Memphis), can adjust click on menu, etc ...
- MemFSFiler made RO 2.00 incompatible, but it is worth it!
- Mods to MemFS sources to get compiling with new FSLib code, still
some work required for it to actually function though !
- Memphis found in Tennessee, USA ;-)
Modifications to v2.03 (15-May-93)
- Got new memfs sources from bdb - now compiles & runs happily with
latest fslib. desktop free support broken ...
- Fixed freespace (needed enabling from fslib sources)
Modifications to v2.04 (06-Jul-93)
- Fixed templates file
- New 3D-look templates - autoloads correct one based on setting of
'3D look' CMOS byte
- Sent filetype/FS number allocation request to Acorn Customer Support
Modifications to v2.05 (12-Aug-93)
- Improved documentation + reorganized 'todo' file for next public
release version
- Emailed Acorn customer services regarding distribution of FSLib
sources + patched cmhg program
- Enabled query message on quit of memfiler when there is data in the
sprite area
- Shaved around 2-3Kb off the combined module size by recompiling with
'-ff' (no embedded function names). Also done with 'FSLib' library.
- Can now drag objects from the filer straight onto the memfs icon and
they are copied (or moved with shift) using m/tasking filer_action
- Filer now has integrated Darren Durbin's 'LockSNEW' module which
filters out dangerous *SNew and *Sload commands. Can toggle filtering
on/off with *MemProtect/*MemNormal
Modifications to v2.06 (22-Aug-93)
- Got permission to distribute FSLib code from Acorn (yipee!) copyright
and disclaimer notices added
- Patch program for cmhg tool added + docs, because we aren't allowed
to distribute Acorn binaries without a license
Modifications to v2.07 (24-Aug-93)
- Got an Acorn-allocated FS number (91) and Filetype (&3f1)
Modifications to v2.08 (08-Sep-93) [release]
- Fixed dragasprite (was looking at wrong CMOS bit)
- Corrected memcore filetype
- Got a whole load of new code from Brian - what am I going to do??!
- Fixed major bug in compressed pages code
- Added (c) messages to each source file
ReFormatted all text files to Mode 12 screen
Improved documentation a little
- Fixed bug with saveas dbox (3D version) *must* be 'Click', not
'Click+Drag' icon type for OK icon
- Vastly improved page compression/decompression routines, and fixed
uncompress (I hope!) to stop it bombing out filer_action ...
- Strange problem with system() screwing up Life As We Know It in
memfiler - using OS_CLI instead seems to cure the problem!